#!usr/bin/env python  
# -*- coding:utf-8 -*-
""" 
@author:robot
@file: all_sort.py 
@version:
@time: 2024/01/25

可以先确定第一位，将已经确定的元素放入一个数组中，再用一个循环对剩余元素进行全排列。在对剩余元素进行全排列时，就是递归执行上述过程，但是要注意数组的更新。

接下来机芯程序的设计，定义一个名为temp的列表，作为每一种排列方式的最终输入。对输入列表中的每一个元素，通过递归方式不断向temp中添加元素，使用一个变量position计数。
"""


class AllSort:
    arr = []

    def all_sort(self, arr):
        self.arr = arr
        temp = []
        self.dfs(0, temp)

    def dfs(self, position, temp):
        if position == len(self.arr):
            print(temp)
        for i in self.arr:
            if i not in temp:
                temp.append(i)
                self.dfs(position + 1, temp)
                temp.pop()


AllSort().all_sort(['a', 'b', 'c'])
